package g.beny.framework.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.nutz.log.Log;
import org.nutz.log.Logs;
/**
 * 工具类MD5生成
* @ClassName
*	MD5
* @Description
*	TODO
* @author 
*	gson
* @date 
*	2012-8-3 下午2:05:03
*
 */
public final class MD5 {
	private static final Log log = Logs.getLog(MD5.class);
	
	private MD5() {}
	/**
	 * MD5 加密
	 * 
	 * @methodName: encrypt
	 * @Description:
	 * @CreatedOn: 2012-8-3 下午2:00:32
	 * @author gson
	 * @param str 加密字符串
	 * @return
	 */
	public final static String encrypt(String str) {
		MessageDigest messageDigest = null;
		try {
			messageDigest = MessageDigest.getInstance("MD5");
			messageDigest.reset();
			messageDigest.update(str.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			if(log.isErrorEnabled())
				log.error(e.getMessage());
		} catch (UnsupportedEncodingException e) {
			if(log.isErrorEnabled())
				log.error(e.getMessage());
		}
		byte[] byteArray = messageDigest.digest();
		StringBuffer md5StrBuff = new StringBuffer();
		for (int i = 0; i < byteArray.length; i++) {
			if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
				md5StrBuff.append("0").append(
						Integer.toHexString(0xFF & byteArray[i]));
			} else {
				md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
			}
		}
		return md5StrBuff.toString();
	}
}
